package cn.kb05;

/*
 * @author
 * @Description
 * @date
 * */
public class Mymap {
    private Mylink [] table;
    private int POW;
    private  int DEFAULT_TABLE_CAPACITY=16;
    int size;


    public Mymap(){
        this.table = new Mylink[DEFAULT_TABLE_CAPACITY];
    }

    public void put(Object key,Object value){
       //计算下标
        int Flag= calcFlag(key);

        if (table[Flag]==null) {
            //创建链表并将数据存放到链表中 并把链表存到table中
            Mylink link = new Mylink();
            link.add(key, value);
        }
    }

    public int calcFlag(Object key){
        if (key==null){return 0;
        }else {
        return key.hashCode()&((1<< POW)-1);
        }
    }




    private void resize(){
        //  新的桶数组建立
        //  重写设置初始化参数
        POW++;
        DEFAULT_TABLE_CAPACITY=DEFAULT_TABLE_CAPACITY<<1;
        size=0;
        Mylink [] newTab= new Mylink[DEFAULT_TABLE_CAPACITY];
        //将原map中的数据都提出来 并重新存放到新的tab中
        for (int i=0;i<table.length;i++){
            if (table[i]==null){
                continue;
            }

            //链表循环

            //

        }
    }

}
